package pessoal;

import ferramentas.DataUtil;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import java.util.GregorianCalendar;
import java.util.logging.Level;
import java.util.logging.Logger;

/**
 *
 * @author ciar
 */
public class Curso {

    private int numero;
    private String nome;
    private int cargaHoraria;
    private Date inicioInscricao;
    private Date fimInscricao;
    private Date homologacaoPreliminar;
    private Date homologacaoFinal;
    private Date inicioRecurso;
    private Date fimRecurso;
    private String questao;
    private int tipo;
    private int modeloCertificado;
    private int maxCaracteresQuestao;
    private int minCaracteresQuestao;
    private String tipoVaga;

    public Curso(int numero, String nome, int cargaHoraria, Date inicioInscricao, Date fimInscricao, String questao, int tipo, int modeloCertificado,
            String tipoVaga, int minCaracteresQuestao, int maxCaracteresQuestao, Date homologacaoPreliminar, Date homologacaoFinal, Date inicioRecurso, Date fimRecurso) {
        this.nome = nome;
        this.cargaHoraria = cargaHoraria;
        this.inicioInscricao = inicioInscricao;
        this.fimInscricao = fimInscricao;
        this.questao = questao;
        this.tipo = tipo;
        this.modeloCertificado = modeloCertificado;
        this.tipoVaga = tipoVaga;
        this.numero = numero;
        this.minCaracteresQuestao = minCaracteresQuestao;
        this.maxCaracteresQuestao = maxCaracteresQuestao;
        this.homologacaoPreliminar = homologacaoPreliminar;
        this.homologacaoFinal = homologacaoFinal;
        this.inicioRecurso = inicioRecurso;
        this.fimRecurso = fimRecurso;
    }

    public Curso(String nome, int cargaHoraria, Date inicioInscricao, Date fimInscricao, String questao, int tipo, int modeloCertificado, String tipoVaga, int minCaracteresQuestao,
            int maxCaracteresQuestao, Date homologacaoPreliminar, Date homologacaoFinal, Date inicioRecurso, Date fimRecurso) {
        this.nome = nome;
        this.cargaHoraria = cargaHoraria;
        this.inicioInscricao = inicioInscricao;
        this.fimInscricao = fimInscricao;
        this.questao = questao;
        this.tipo = tipo;
        this.modeloCertificado = modeloCertificado;
        this.tipoVaga = tipoVaga;
        this.minCaracteresQuestao = minCaracteresQuestao;
        this.maxCaracteresQuestao = maxCaracteresQuestao;
        this.homologacaoPreliminar = homologacaoPreliminar;
        this.homologacaoFinal = homologacaoFinal;
        this.inicioRecurso = inicioRecurso;
        this.fimRecurso = fimRecurso;
    }

    public Curso(String nome, String questao, int numero, int cargaHoraria, Date inicioInscricao, Date fimInscricao, int tipo, int modeloCertificado, int minCaracteresQuestao,
            int maxCaracteresQuestao, Date homologacaoPreliminar, Date homologacaoFinal, Date inicioRecurso, Date fimRecurso) {
        this.nome = nome;
        this.cargaHoraria = cargaHoraria;
        this.inicioInscricao = inicioInscricao;
        this.fimInscricao = fimInscricao;
        this.questao = questao;
        this.numero = numero;
        this.tipo = tipo;
        this.modeloCertificado = modeloCertificado;
        this.minCaracteresQuestao = minCaracteresQuestao;
        this.maxCaracteresQuestao = maxCaracteresQuestao;
        this.homologacaoPreliminar = homologacaoPreliminar;
        this.homologacaoFinal = homologacaoFinal;
        this.inicioRecurso = inicioRecurso;
        this.fimRecurso = fimRecurso;
    }

    public Curso(int numero, String nome) {
        this.nome = nome;
        this.numero = numero;
    }

    public int getCargaHoraria() {
        return cargaHoraria;
    }

    public Date getFimInscricao() {
        return fimInscricao;
    }

    public Date getInicioInscricao() {
        return inicioInscricao;
    }

    public String getFimFormated() {
        return DataUtil.getData(fimInscricao, "/");
    }

    public String getInicioFormated() {
        return DataUtil.getData(inicioInscricao, "/");
    }

    public String getHomologacaoPreFormated() {
        return DataUtil.getData(homologacaoPreliminar, "/");
    }

    public String getHomologacaoFinalFormated() {
        return DataUtil.getData(homologacaoFinal, "/");
    }
    
    public String getInicioRecursoFormated() {
        return DataUtil.getData(inicioRecurso, "/");
    }

    public String getFimRecursoFormated() {
        return DataUtil.getData(fimRecurso, "/");
    }

    public Date getHomologacaoPreliminar() {
        return homologacaoPreliminar;
    }

    public void setHomologacaoPreliminar(Date homologacaoPreliminar) {
        this.homologacaoPreliminar = homologacaoPreliminar;
    }

    public Date getHomologacaoFinal() {
        return homologacaoFinal;
    }

    public void setHomologacaoFinal(Date homologacaoFinal) {
        this.homologacaoFinal = homologacaoFinal;
    }

    public String getNome() {
        return nome;
    }

    public int getNumero() {
        return numero;
    }

    public String getQuestao() {
        return questao;
    }

    public int getTipo() {
        return tipo;
    }

    public int getModeloCertificado() {
        return modeloCertificado;
    }

    public void setModeloCertificado(int modeloCertificado) {
        this.modeloCertificado = modeloCertificado;
    }

    public String getTipoVaga() {
        return tipoVaga;
    }

    public void setTipoVaga(String tipoVaga) {
        this.tipoVaga = tipoVaga;
    }

    public void setNumero(int numero) {
        this.numero = numero;
    }

    public int getMaxCaracteresQuestao() {
        return maxCaracteresQuestao;
    }

    public void setMaxCaracteresQuestao(int maxCaracteresQuestao) {
        this.maxCaracteresQuestao = maxCaracteresQuestao;
    }

    public int getMinCaracteresQuestao() {
        return minCaracteresQuestao;
    }

    public void setMinCaracteresQuestao(int minCaracteresQuestao) {
        this.minCaracteresQuestao = minCaracteresQuestao;
    }

    public Date getInicioRecurso() {
        return inicioRecurso;
    }

    public void setInicioRecurso(Date inicioRecurso) {
        this.inicioRecurso = inicioRecurso;
    }

    public Date getFimRecurso() {
        return fimRecurso;
    }

    public void setFimRecurso(Date fimRecurso) {
        this.fimRecurso = fimRecurso;
    }

    public Calendar getDataCalendar(String sData) {
        Calendar data = new GregorianCalendar();
        SimpleDateFormat sd = new SimpleDateFormat("yyyy-MM-dd");
        try {
            data.setTime(sd.parse(sData));
        } catch (ParseException ex) {
            ex.printStackTrace();
            System.out.println("Não foi possível obter a data.");
        }
        return data;
    }

    public boolean isInscricoesAbertas() {
        Calendar hoje = Calendar.getInstance();
        hoje.set(Calendar.MILLISECOND, 0);
        hoje.set(Calendar.SECOND, 0);
        hoje.set(Calendar.MINUTE, 0);
        hoje.set(Calendar.HOUR, 0);
        hoje.set(Calendar.HOUR_OF_DAY, 0);
        hoje.add(Calendar.DAY_OF_MONTH, -1);
        return fimInscricao.after(hoje.getTime());
    }
}
